更新类库,窗口管理模块置闲。

This commit is contained in:
ZhanGSKen 2025-03-20 01:22:05 +08:00
parent dc1b138dd7
commit fe943fef85
14 changed files with 352 additions and 347 deletions

View File

@ -46,8 +46,7 @@ android {
dependencies { dependencies {
api project(':libapputils') api project(':libapputils')
api fileTree(dir: 'libs', include: ['*.jar']) api fileTree(dir: 'libs', include: ['*.jar'])
implementation 'cc.winboll.studio:libappbase:15.0.5'
// //
implementation 'com.google.zxing:core:3.4.1' implementation 'com.google.zxing:core:3.4.1'
implementation 'com.journeyapps:zxing-android-embedded:3.6.0' implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
@ -63,4 +62,6 @@ dependencies {
// //
//implementation 'io.github.medyo:android-about-page:2.0.0' //implementation 'io.github.medyo:android-about-page:2.0.0'
implementation 'cc.winboll.studio:libappbase:15.0.5'
} }

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Tue Mar 18 12:18:32 HKT 2025 #Wed Mar 19 17:20:42 GMT 2025
stageCount=7 stageCount=7
libraryProject=libapputils libraryProject=libapputils
baseVersion=15.0 baseVersion=15.0
publishVersion=15.0.6 publishVersion=15.0.6
buildCount=0 buildCount=1
baseBetaVersion=15.0.7 baseBetaVersion=15.0.7

View File

@ -77,7 +77,7 @@ public class App extends GlobalApplication {
mMyActivityLifecycleCallbacks = new MyActivityLifecycleCallbacks(); mMyActivityLifecycleCallbacks = new MyActivityLifecycleCallbacks();
registerActivityLifecycleCallbacks(mMyActivityLifecycleCallbacks); registerActivityLifecycleCallbacks(mMyActivityLifecycleCallbacks);
// 设置默认 WinBoll 应用 UI 类型 // 设置默认 WinBoll 应用 UI 类型
WinBollActivityManager.getInstance(this).setWinBollUI_TYPE(WinBollActivityManager.WinBollUI_TYPE.Service); //WinBollActivityManager.getInstance(this).setWinBollUI_TYPE(WinBollActivityManager.WinBollUI_TYPE.Service);
//ToastUtils.show("WinBollUI_TYPE " + getWinBollUI_TYPE()); //ToastUtils.show("WinBollUI_TYPE " + getWinBollUI_TYPE());
} catch (Exception e) { } catch (Exception e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());

View File

@ -36,11 +36,11 @@ final public class MainActivity extends Activity implements IWinBollActivity {
Toolbar mToolbar; Toolbar mToolbar;
LogView mLogView; LogView mLogView;
//
@Override // @Override
public Activity getActivity() { // public Activity getActivity() {
return this; // return this;
} // }
@Override @Override
public APPInfo getAppInfo() { public APPInfo getAppInfo() {
@ -177,12 +177,12 @@ final public class MainActivity extends Activity implements IWinBollActivity {
protected void onPostCreate(Bundle savedInstanceState) { protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState); super.onPostCreate(savedInstanceState);
// 缓存当前 activity // 缓存当前 activity
WinBollActivityManager.getInstance(this).add(this); //WinBollActivityManager.getInstance(this).add(this);
} }
@Override @Override
public void onDestroy() { public void onDestroy() {
WinBollActivityManager.getInstance(this).registeRemove(this); //WinBollActivityManager.getInstance(this).registeRemove(this);
super.onDestroy(); super.onDestroy();
} }
@ -198,7 +198,7 @@ final public class MainActivity extends Activity implements IWinBollActivity {
// startActivity(intent); // startActivity(intent);
//WinBollActivityManager.getInstance().printAvtivityListInfo(); //WinBollActivityManager.getInstance().printAvtivityListInfo();
WinBollActivityManager.getInstance(this).startWinBollActivity(this, LogActivity.class); //WinBollActivityManager.getInstance(this).startWinBollActivity(this, LogActivity.class);
} }
// //
@ -268,7 +268,7 @@ final public class MainActivity extends Activity implements IWinBollActivity {
AboutActivityFactory.showAboutActivity(this, getAppInfo()); AboutActivityFactory.showAboutActivity(this, getAppInfo());
return true; return true;
} else if (item.getItemId() == R.id.item_teststringtoqrcodeview) { } else if (item.getItemId() == R.id.item_teststringtoqrcodeview) {
WinBollActivityManager.getInstance(this).startWinBollActivity(this, TestStringToQrCodeViewActivity.class); //WinBollActivityManager.getInstance(this).startWinBollActivity(this, TestStringToQrCodeViewActivity.class);
} else if (item.getItemId() == R.id.item_testqrcodedecodeactivity) { } else if (item.getItemId() == R.id.item_testqrcodedecodeactivity) {
Intent intent = new Intent(this, QRCodeDecodeActivity.class); Intent intent = new Intent(this, QRCodeDecodeActivity.class);
startActivityForResult(intent, REQUEST_QRCODEDECODE_ACTIVITY); startActivityForResult(intent, REQUEST_QRCODEDECODE_ACTIVITY);
@ -278,13 +278,13 @@ final public class MainActivity extends Activity implements IWinBollActivity {
} }
return true; return true;
} else if (item.getItemId() == R.id.item_log) { } else if (item.getItemId() == R.id.item_log) {
WinBollActivityManager.getInstance(this).startWinBollActivity(this, LogActivity.class); //WinBollActivityManager.getInstance(this).startWinBollActivity(this, LogActivity.class);
return true; return true;
} else if (item.getItemId() == R.id.item_exitdebug) { } else if (item.getItemId() == R.id.item_exitdebug) {
//AboutView.setApp2NormalMode(this); //AboutView.setApp2NormalMode(this);
return true; return true;
} else if (item.getItemId() == android.R.id.home) { } else if (item.getItemId() == android.R.id.home) {
WinBollActivityManager.getInstance(this).finish(this); //WinBollActivityManager.getInstance(this).finish(this);
return true; return true;
} }
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
@ -301,7 +301,7 @@ final public class MainActivity extends Activity implements IWinBollActivity {
@Override @Override
public void onYes() { public void onYes() {
WinBollActivityManager.getInstance(getApplicationContext()).finishAll(); //WinBollActivityManager.getInstance(getApplicationContext()).finishAll();
} }
@Override @Override
@ -314,12 +314,12 @@ final public class MainActivity extends Activity implements IWinBollActivity {
@Override @Override
public void onBackPressed() { public void onBackPressed() {
if (WinBollActivityManager.getInstance(getApplicationContext()).isFirstIWinBollActivity(this)) { // if (WinBollActivityManager.getInstance(getApplicationContext()).isFirstIWinBollActivity(this)) {
exit(); // exit();
} else { // } else {
WinBollActivityManager.getInstance(this).finish(this); // WinBollActivityManager.getInstance(this).finish(this);
super.onBackPressed(); // super.onBackPressed();
} // }
} }
public void onTestAboutActivity(View view) { public void onTestAboutActivity(View view) {
@ -329,7 +329,7 @@ final public class MainActivity extends Activity implements IWinBollActivity {
public void onTestJavascriptHtmlActivity(View view) { public void onTestJavascriptHtmlActivity(View view) {
Intent intent = new Intent(this, AssetsHtmlActivity.class); Intent intent = new Intent(this, AssetsHtmlActivity.class);
intent.putExtra(AssetsHtmlActivity.EXTRA_HTMLFILENAME, "javascript_test.html"); intent.putExtra(AssetsHtmlActivity.EXTRA_HTMLFILENAME, "javascript_test.html");
WinBollActivityManager.getInstance(this).startWinBollActivity(this, intent, AssetsHtmlActivity.class); //WinBollActivityManager.getInstance(this).startWinBollActivity(this, intent, AssetsHtmlActivity.class);
} }
@Override @Override

View File

@ -17,11 +17,11 @@ public class TestStringToQrCodeViewActivity extends Activity implements IWinBoll
public static final String TAG = "TestStringToQrCodeViewActivity"; public static final String TAG = "TestStringToQrCodeViewActivity";
StringToQrCodeView mStringToQrCodeView; StringToQrCodeView mStringToQrCodeView;
//
@Override // @Override
public Activity getActivity() { // public Activity getActivity() {
return this; // return this;
} // }
@Override @Override
public APPInfo getAppInfo() { public APPInfo getAppInfo() {

View File

@ -21,7 +21,6 @@ android {
dependencies { dependencies {
api fileTree(dir: 'libs', include: ['*.jar']) api fileTree(dir: 'libs', include: ['*.jar'])
implementation 'cc.winboll.studio:libappbase:15.0.5'
// //
implementation 'com.google.zxing:core:3.4.1' implementation 'com.google.zxing:core:3.4.1'
@ -35,4 +34,9 @@ dependencies {
// SSH // SSH
//implementation 'com.jcraft:jsch:0.1.55' //implementation 'com.jcraft:jsch:0.1.55'
//
//implementation 'io.github.medyo:android-about-page:2.0.0'
implementation 'cc.winboll.studio:libappbase:15.0.5'
} }

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Tue Mar 18 12:18:22 HKT 2025 #Wed Mar 19 17:20:42 GMT 2025
stageCount=7 stageCount=7
libraryProject=libapputils libraryProject=libapputils
baseVersion=15.0 baseVersion=15.0
publishVersion=15.0.6 publishVersion=15.0.6
buildCount=0 buildCount=1
baseBetaVersion=15.0.7 baseBetaVersion=15.0.7

View File

@ -85,9 +85,9 @@ final public class AboutActivity extends Activity implements IWinBollActivity {
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.item_help) { // if (item.getItemId() == R.id.item_help) {
WinBollActivityManager.getInstance(this).startWinBollActivity(this, AssetsHtmlActivity.class); // WinBollActivityManager.getInstance(this).startWinBollActivity(this, AssetsHtmlActivity.class);
} // }
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
} }

View File

@ -33,11 +33,11 @@ public class AssetsHtmlActivity extends Activity implements IWinBollActivity {
// Assets 文件夹里的 Html 文件的名称 // Assets 文件夹里的 Html 文件的名称
String mszHtmlFileName; String mszHtmlFileName;
//
@Override // @Override
public Activity getActivity() { // public Activity getActivity() {
return this; // return this;
} // }
@Override @Override
public APPInfo getAppInfo() { public APPInfo getAppInfo() {

View File

@ -19,11 +19,11 @@ public class LogActivity extends Activity implements IWinBollActivity {
public static final String TAG = "LogActivity"; public static final String TAG = "LogActivity";
LogView mLogView; LogView mLogView;
//
@Override // @Override
public Activity getActivity() { // public Activity getActivity() {
return this; // return this;
} // }
@Override @Override
public APPInfo getAppInfo() { public APPInfo getAppInfo() {

View File

@ -30,10 +30,10 @@ public class QRCodeDecodeActivity extends Activity implements IWinBollActivity {
TextView resultTextView; TextView resultTextView;
DecoratedBarcodeView barcodeView; DecoratedBarcodeView barcodeView;
@Override // @Override
public Activity getActivity() { // public Activity getActivity() {
return this; // return this;
} // }
@Override @Override
public APPInfo getAppInfo() { public APPInfo getAppInfo() {

View File

@ -49,6 +49,6 @@ public class AboutActivityFactory {
Intent intent = new Intent(context, AboutActivity.class); Intent intent = new Intent(context, AboutActivity.class);
intent.putExtra(AboutActivity.EXTRA_APPINFO, (appInfo == null) ? AboutActivityFactory.buildDefaultAPPInfo():appInfo); intent.putExtra(AboutActivity.EXTRA_APPINFO, (appInfo == null) ? AboutActivityFactory.buildDefaultAPPInfo():appInfo);
WinBollActivityManager.getInstance(context).startWinBollActivity(context, intent, AboutActivity.class); //WinBollActivityManager.getInstance(context).startWinBollActivity(context, intent, AboutActivity.class);
} }
} }

View File

@ -14,7 +14,7 @@ public interface IWinBollActivity {
public static final String TAG = "IWinBollActivity"; public static final String TAG = "IWinBollActivity";
// 获取应用资源上下文 // 获取应用资源上下文
abstract public Context getApplicationContext(); //abstract public Context getApplicationContext();
abstract public APPInfo getAppInfo(); abstract public APPInfo getAppInfo();
abstract public String getTag(); abstract public String getTag();
abstract public Toolbar initToolBar(); abstract public Toolbar initToolBar();

View File

@ -19,300 +19,300 @@ import java.util.Map;
public class WinBollActivityManager { public class WinBollActivityManager {
public static final String TAG = "WinBollActivityManager"; // public static final String TAG = "WinBollActivityManager";
public static final String EXTRA_TAG = "EXTRA_TAG"; // public static final String EXTRA_TAG = "EXTRA_TAG";
//
public static enum WinBollUI_TYPE { // public static enum WinBollUI_TYPE {
Aplication, // 退出应用后保持最近任务栏任务记录主窗口 // Aplication, // 退出应用后保持最近任务栏任务记录主窗口
Service // 退出应用后清理所有最近任务栏任务记录窗口 // Service // 退出应用后清理所有最近任务栏任务记录窗口
}; // };
//
// 应用类型标志 // // 应用类型标志
volatile static WinBollUI_TYPE _mWinBollUI_TYPE = WinBollUI_TYPE.Service; // volatile static WinBollUI_TYPE _mWinBollUI_TYPE = WinBollUI_TYPE.Service;
//
Context mContext; // Context mContext;
MyActivityLifecycleCallbacks mMyActivityLifecycleCallbacks; // MyActivityLifecycleCallbacks mMyActivityLifecycleCallbacks;
static WinBollActivityManager _mWinBollActivityManager; // static WinBollActivityManager _mWinBollActivityManager;
static Map<String, IWinBollActivity> _mapIWinBollList; // static Map<String, IWinBollActivity> _mapIWinBollList;
IWinBollActivity firstIWinBollActivity; // IWinBollActivity firstIWinBollActivity;
//
public WinBollActivityManager(Context context) { // public WinBollActivityManager(Context context) {
mContext = context; // mContext = context;
LogUtils.d(TAG, "WinBollActivityManager()"); // LogUtils.d(TAG, "WinBollActivityManager()");
_mapIWinBollList = new HashMap<String, IWinBollActivity>(); // _mapIWinBollList = new HashMap<String, IWinBollActivity>();
} // }
//
public static synchronized WinBollActivityManager getInstance(Context context) { // public static synchronized WinBollActivityManager getInstance(Context context) {
LogUtils.d(TAG, "getInstance"); // LogUtils.d(TAG, "getInstance");
if (_mWinBollActivityManager == null) { // if (_mWinBollActivityManager == null) {
LogUtils.d(TAG, "_mWinBollActivityManager == null"); // LogUtils.d(TAG, "_mWinBollActivityManager == null");
_mWinBollActivityManager = new WinBollActivityManager(context); // _mWinBollActivityManager = new WinBollActivityManager(context);
} // }
return _mWinBollActivityManager; // return _mWinBollActivityManager;
} // }
//
// // //
// 设置 WinBoll 应用 UI 类型 // // 设置 WinBoll 应用 UI 类型
// // //
public synchronized static void setWinBollUI_TYPE(WinBollUI_TYPE mWinBollUI_TYPE) { // public synchronized static void setWinBollUI_TYPE(WinBollUI_TYPE mWinBollUI_TYPE) {
_mWinBollUI_TYPE = mWinBollUI_TYPE; // _mWinBollUI_TYPE = mWinBollUI_TYPE;
} // }
//
// // //
// 获取 WinBoll 应用 UI 类型 // // 获取 WinBoll 应用 UI 类型
// // //
public synchronized static WinBollUI_TYPE getWinBollUI_TYPE() { // public synchronized static WinBollUI_TYPE getWinBollUI_TYPE() {
return _mWinBollUI_TYPE; // return _mWinBollUI_TYPE;
} // }
//
// // //
// 把Activity添加到管理中 // // 把Activity添加到管理中
// // //
public <T extends IWinBollActivity> void add(T iWinBoll) { // public <T extends IWinBollActivity> void add(T iWinBoll) {
if (isActive(iWinBoll.getTag())) { // if (isActive(iWinBoll.getTag())) {
LogUtils.d(TAG, String.format("add(...) %s is active.", iWinBoll.getTag())); // LogUtils.d(TAG, String.format("add(...) %s is active.", iWinBoll.getTag()));
} else { // } else {
// 设置起始活动窗口以便最后退出时提问 // // 设置起始活动窗口以便最后退出时提问
if (firstIWinBollActivity == null && _mapIWinBollList.size() == 0) { // if (firstIWinBollActivity == null && _mapIWinBollList.size() == 0) {
firstIWinBollActivity = iWinBoll; // firstIWinBollActivity = iWinBoll;
} // }
//
// 添加到活动窗口列表 // // 添加到活动窗口列表
_mapIWinBollList.put(iWinBoll.getTag(), iWinBoll); // _mapIWinBollList.put(iWinBoll.getTag(), iWinBoll);
LogUtils.d(TAG, String.format("Add activity : %s\n_mapActivityList.size() : %d", iWinBoll.getTag(), _mapIWinBollList.size())); // LogUtils.d(TAG, String.format("Add activity : %s\n_mapActivityList.size() : %d", iWinBoll.getTag(), _mapIWinBollList.size()));
} // }
} // }
//
//
// // //
// activity: null // // activity: null
// intent.putExtra 函数 EXTRA_TAG 参数为 tag // // intent.putExtra 函数 EXTRA_TAG 参数为 tag
// activity: 不为 null // // activity: 不为 null
// intent.putExtra 函数 "tag" 参数为 activity.getTag() // // intent.putExtra 函数 "tag" 参数为 activity.getTag()
// // //
public <T extends IWinBollActivity> void startWinBollActivity(Context context, Class<T> clazz) { // public <T extends IWinBollActivity> void startWinBollActivity(Context context, Class<T> clazz) {
try { // try {
// 如果窗口已存在就重启窗口 // // 如果窗口已存在就重启窗口
String tag = clazz.newInstance().getTag(); // String tag = clazz.newInstance().getTag();
if (isActive(tag)) { // if (isActive(tag)) {
resumeActivity(context, tag); // resumeActivity(context, tag);
return; // return;
} // }
//
// 新建一个任务窗口 // // 新建一个任务窗口
Intent intent = new Intent(context, clazz); // Intent intent = new Intent(context, clazz);
//打开多任务窗口 flags // //打开多任务窗口 flags
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); // intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); // intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(EXTRA_TAG, tag); // intent.putExtra(EXTRA_TAG, tag);
mContext.startActivity(intent); // mContext.startActivity(intent);
} catch (InstantiationException | IllegalAccessException e) { // } catch (InstantiationException | IllegalAccessException e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); // LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
} // }
} // }
//
public <T extends IWinBollActivity> void startWinBollActivity(Context context, Intent intent, Class<T> clazz) { // public <T extends IWinBollActivity> void startWinBollActivity(Context context, Intent intent, Class<T> clazz) {
try { // try {
// 如果窗口已存在就重启窗口 // // 如果窗口已存在就重启窗口
String tag = clazz.newInstance().getTag(); // String tag = clazz.newInstance().getTag();
if (isActive(tag)) { // if (isActive(tag)) {
resumeActivity(context, tag); // resumeActivity(context, tag);
return; // return;
} // }
//
// 新建一个任务窗口 // // 新建一个任务窗口
//Intent intent = new Intent(context, clazz); // //Intent intent = new Intent(context, clazz);
//打开多任务窗口 flags // //打开多任务窗口 flags
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); // intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); // intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(EXTRA_TAG, tag); // intent.putExtra(EXTRA_TAG, tag);
mContext.startActivity(intent); // mContext.startActivity(intent);
} catch (InstantiationException | IllegalAccessException e) { // } catch (InstantiationException | IllegalAccessException e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); // LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
} // }
} // }
//
public boolean isFirstIWinBollActivity(IWinBollActivity iWinBollActivity) { // public boolean isFirstIWinBollActivity(IWinBollActivity iWinBollActivity) {
return firstIWinBollActivity != null && firstIWinBollActivity == iWinBollActivity; // return firstIWinBollActivity != null && firstIWinBollActivity == iWinBollActivity;
} // }
//
// // //
// 判断 tag绑定的 MyActivity是否存在 // // 判断 tag绑定的 MyActivity是否存在
// // //
public boolean isActive(String tag) { // public boolean isActive(String tag) {
//printAvtivityListInfo(); // //printAvtivityListInfo();
IWinBollActivity iWinBoll = getIWinBoll(tag); // IWinBollActivity iWinBoll = getIWinBoll(tag);
if (iWinBoll != null) { // if (iWinBoll != null) {
LogUtils.d(TAG, "isActive(...) activity != null tag " + tag); // LogUtils.d(TAG, "isActive(...) activity != null tag " + tag);
//ToastUtils.show("activity != null tag " + tag); // //ToastUtils.show("activity != null tag " + tag);
//判断是否为 BaseActivity,如果已经销毁则移除 // //判断是否为 BaseActivity,如果已经销毁则移除
if (iWinBoll.getActivity().isFinishing() || iWinBoll.getActivity().isDestroyed()) { // if (iWinBoll.getActivity().isFinishing() || iWinBoll.getActivity().isDestroyed()) {
_mapIWinBollList.remove(iWinBoll.getTag()); // _mapIWinBollList.remove(iWinBoll.getTag());
//_mWinBollActivityList.remove(activity); // //_mWinBollActivityList.remove(activity);
LogUtils.d(TAG, String.format("isActive(...) remove activity.\ntag : %s", tag)); // LogUtils.d(TAG, String.format("isActive(...) remove activity.\ntag : %s", tag));
return false; // return false;
} else { // } else {
LogUtils.d(TAG, String.format("isActive(...) activity is exist.\ntag : %s", tag)); // LogUtils.d(TAG, String.format("isActive(...) activity is exist.\ntag : %s", tag));
return true; // return true;
} // }
} else { // } else {
LogUtils.d(TAG, String.format("isActive(...) activity == null\ntag : %s", tag)); // LogUtils.d(TAG, String.format("isActive(...) activity == null\ntag : %s", tag));
return false; // return false;
} // }
} // }
//
static IWinBollActivity getIWinBoll(String tag) { // static IWinBollActivity getIWinBoll(String tag) {
return _mapIWinBollList.get(tag); // return _mapIWinBollList.get(tag);
} // }
//
// // //
// 找到tag 绑定的 BaseActivity 通过 getTaskId() 移动到前台 // // 找到tag 绑定的 BaseActivity 通过 getTaskId() 移动到前台
// // //
public <T extends IWinBollActivity> void resumeActivity(Context context, String tag) { // public <T extends IWinBollActivity> void resumeActivity(Context context, String tag) {
LogUtils.d(TAG, "resumeActivty"); // LogUtils.d(TAG, "resumeActivty");
T iWinBoll = (T)getIWinBoll(tag); // T iWinBoll = (T)getIWinBoll(tag);
//LogUtils.d(TAG, "activity " + activity.getTag()); // //LogUtils.d(TAG, "activity " + activity.getTag());
if (iWinBoll != null && !iWinBoll.getActivity().isFinishing() && !iWinBoll.getActivity().isDestroyed()) { // if (iWinBoll != null && !iWinBoll.getActivity().isFinishing() && !iWinBoll.getActivity().isDestroyed()) {
resumeActivity(context, iWinBoll); // resumeActivity(context, iWinBoll);
} // }
} // }
//
// // //
// 找到tag 绑定的 BaseActivity 通过 getTaskId() 移动到前台 // // 找到tag 绑定的 BaseActivity 通过 getTaskId() 移动到前台
// // //
public <T extends IWinBollActivity> void resumeActivity(Context context, T iWinBoll) { // public <T extends IWinBollActivity> void resumeActivity(Context context, T iWinBoll) {
ActivityManager am = (ActivityManager) iWinBoll.getActivity().getSystemService(Context.ACTIVITY_SERVICE); // ActivityManager am = (ActivityManager) iWinBoll.getActivity().getSystemService(Context.ACTIVITY_SERVICE);
//返回启动它的根任务home 或者 MainActivity // //返回启动它的根任务home 或者 MainActivity
Intent intent = new Intent(context, iWinBoll.getClass()); // Intent intent = new Intent(context, iWinBoll.getClass());
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); // TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addNextIntentWithParentStack(intent); // stackBuilder.addNextIntentWithParentStack(intent);
stackBuilder.startActivities(); // stackBuilder.startActivities();
//moveTaskToFront(YourTaskId, 0); // //moveTaskToFront(YourTaskId, 0);
LogUtils.d(TAG, "am.moveTaskToFront"); // LogUtils.d(TAG, "am.moveTaskToFront");
//ToastUtils.show("resumeActivity am.moveTaskToFront"); // //ToastUtils.show("resumeActivity am.moveTaskToFront");
am.moveTaskToFront(iWinBoll.getActivity().getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION); // am.moveTaskToFront(iWinBoll.getActivity().getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION);
} // }
//
//
// // //
// 结束所有 Activity // // 结束所有 Activity
// // //
public void finishAll() { // public void finishAll() {
try { // try {
for (String key : _mapIWinBollList.keySet()) { // for (String key : _mapIWinBollList.keySet()) {
//System.out.println("Key: " + key + ", Value: " + _mapActivityList.get(key)); // //System.out.println("Key: " + key + ", Value: " + _mapActivityList.get(key));
IWinBollActivity iWinBoll = _mapIWinBollList.get(key); // IWinBollActivity iWinBoll = _mapIWinBollList.get(key);
//ToastUtils.show("finishAll() activity"); // //ToastUtils.show("finishAll() activity");
if (iWinBoll != null && !iWinBoll.getActivity().isFinishing() && !iWinBoll.getActivity().isDestroyed()) { // if (iWinBoll != null && !iWinBoll.getActivity().isFinishing() && !iWinBoll.getActivity().isDestroyed()) {
//ToastUtils.show("activity != null ..."); // //ToastUtils.show("activity != null ...");
if (getWinBollUI_TYPE() == WinBollUI_TYPE.Service) { // if (getWinBollUI_TYPE() == WinBollUI_TYPE.Service) {
// 结束窗口和最近任务栏, 建议前台服务类应用使用可以方便用户再次调用 UI 操作 // // 结束窗口和最近任务栏, 建议前台服务类应用使用可以方便用户再次调用 UI 操作
iWinBoll.getActivity().finishAndRemoveTask(); // iWinBoll.getActivity().finishAndRemoveTask();
//ToastUtils.show("finishAll() activity.finishAndRemoveTask();"); // //ToastUtils.show("finishAll() activity.finishAndRemoveTask();");
} else if (getWinBollUI_TYPE() == WinBollUI_TYPE.Aplication) { // } else if (getWinBollUI_TYPE() == WinBollUI_TYPE.Aplication) {
// 结束窗口保留最近任务栏建议前台服务类应用使用可以保持应用的系统自觉性 // // 结束窗口保留最近任务栏建议前台服务类应用使用可以保持应用的系统自觉性
iWinBoll.getActivity().finish(); // iWinBoll.getActivity().finish();
//ToastUtils.show("finishAll() activity.finish();"); // //ToastUtils.show("finishAll() activity.finish();");
} else { // } else {
LogUtils.d(TAG, "WinBollApplication.WinBollUI_TYPE error."); // LogUtils.d(TAG, "WinBollApplication.WinBollUI_TYPE error.");
//ToastUtils.show("WinBollApplication.WinBollUI_TYPE error."); // //ToastUtils.show("WinBollApplication.WinBollUI_TYPE error.");
} // }
} // }
} // }
} catch (Exception e) { // } catch (Exception e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); // LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
} // }
} // }
//
// // //
// 结束指定Activity // // 结束指定Activity
// // //
public <T extends IWinBollActivity> void finish(T iWinBoll) { // public <T extends IWinBollActivity> void finish(T iWinBoll) {
try { // try {
if (iWinBoll != null && !iWinBoll.getActivity().isFinishing() && !iWinBoll.getActivity().isDestroyed()) { // if (iWinBoll != null && !iWinBoll.getActivity().isFinishing() && !iWinBoll.getActivity().isDestroyed()) {
//根据tag 移除 MyActivity // //根据tag 移除 MyActivity
//String tag= activity.getTag(); // //String tag= activity.getTag();
//_mWinBollActivityList.remove(tag); // //_mWinBollActivityList.remove(tag);
//ToastUtils.show("remove"); // //ToastUtils.show("remove");
//ToastUtils.show("_mWinBollActivityArrayMap.size() " + Integer.toString(_mWinBollActivityArrayMap.size())); // //ToastUtils.show("_mWinBollActivityArrayMap.size() " + Integer.toString(_mWinBollActivityArrayMap.size()));
//
// 窗口回调规则 // // 窗口回调规则
// [] 当前窗口位置 >> 调度出的窗口位置 // // [] 当前窗口位置 >> 调度出的窗口位置
// [0] 1 2 3 4 >> 1 // // [0] 1 2 3 4 >> 1
// 0 1 [2] 3 4 >> 1 // // 0 1 [2] 3 4 >> 1
// 0 1 2 [3] 4 >> 2 // // 0 1 2 [3] 4 >> 2
// 0 1 2 3 [4] >> 3 // // 0 1 2 3 [4] >> 3
// [0] >> 直接关闭当前窗口 // // [0] >> 直接关闭当前窗口
LogUtils.d(TAG, "finish no yet."); // LogUtils.d(TAG, "finish no yet.");
IWinBollActivity preIWinBoll = getPreIWinBoll(iWinBoll); // IWinBollActivity preIWinBoll = getPreIWinBoll(iWinBoll);
iWinBoll.getActivity().finish(); // iWinBoll.getActivity().finish();
if (preIWinBoll != null) { // if (preIWinBoll != null) {
resumeActivity(mContext, preIWinBoll); // resumeActivity(mContext, preIWinBoll);
} // }
} // }
//
} catch (Exception e) { // } catch (Exception e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); // LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
} // }
} // }
//
// // //
// 获取窗口队列中的前一个窗口 // // 获取窗口队列中的前一个窗口
// // //
IWinBollActivity getPreIWinBoll(IWinBollActivity iWinBoll) { // IWinBollActivity getPreIWinBoll(IWinBollActivity iWinBoll) {
try { // try {
boolean bingo = false; // boolean bingo = false;
IWinBollActivity preIWinBoll = null; // IWinBollActivity preIWinBoll = null;
for (Map.Entry<String, IWinBollActivity> entity : _mapIWinBollList.entrySet()) { // for (Map.Entry<String, IWinBollActivity> entity : _mapIWinBollList.entrySet()) {
if (entity.getKey().equals(iWinBoll.getTag())) { // if (entity.getKey().equals(iWinBoll.getTag())) {
bingo = true; // bingo = true;
LogUtils.d(TAG, "bingo"); // LogUtils.d(TAG, "bingo");
break; // break;
} // }
preIWinBoll = entity.getValue(); // preIWinBoll = entity.getValue();
} // }
//
if (bingo) { // if (bingo) {
return preIWinBoll; // return preIWinBoll;
} // }
} catch (Exception e) { // } catch (Exception e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); // LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
} // }
//
return null; // return null;
} // }
//
// // //
// 从管理列表中移除管理项 // // 从管理列表中移除管理项
// // //
public <T extends IWinBollActivity> boolean registeRemove(T activity) { // public <T extends IWinBollActivity> boolean registeRemove(T activity) {
IWinBollActivity iWinBollTest = _mapIWinBollList.get(activity.getTag()); // IWinBollActivity iWinBollTest = _mapIWinBollList.get(activity.getTag());
if (iWinBollTest != null) { // if (iWinBollTest != null) {
_mapIWinBollList.remove(activity.getTag()); // _mapIWinBollList.remove(activity.getTag());
return true; // return true;
} // }
return false; // return false;
} // }
//
// // //
// 打印管理列表项列表里的信息 // // 打印管理列表项列表里的信息
// // //
public static void printIWinBollListInfo() { // public static void printIWinBollListInfo() {
//LogUtils.d(TAG, "printAvtivityListInfo"); // //LogUtils.d(TAG, "printAvtivityListInfo");
if (!_mapIWinBollList.isEmpty()) { // if (!_mapIWinBollList.isEmpty()) {
StringBuilder sb = new StringBuilder("Map entries : " + Integer.toString(_mapIWinBollList.size())); // StringBuilder sb = new StringBuilder("Map entries : " + Integer.toString(_mapIWinBollList.size()));
Iterator<Map.Entry<String, IWinBollActivity>> iterator = _mapIWinBollList.entrySet().iterator(); // Iterator<Map.Entry<String, IWinBollActivity>> iterator = _mapIWinBollList.entrySet().iterator();
while (iterator.hasNext()) { // while (iterator.hasNext()) {
Map.Entry<String, IWinBollActivity> entry = iterator.next(); // Map.Entry<String, IWinBollActivity> entry = iterator.next();
sb.append("\nKey: " + entry.getKey() + ", \nValue: " + entry.getValue().getTag()); // sb.append("\nKey: " + entry.getKey() + ", \nValue: " + entry.getValue().getTag());
//ToastUtils.show("\nKey: " + entry.getKey() + ", Value: " + entry.getValue().getTag()); // //ToastUtils.show("\nKey: " + entry.getKey() + ", Value: " + entry.getValue().getTag());
} // }
sb.append("\nMap entries end."); // sb.append("\nMap entries end.");
LogUtils.d(TAG, sb.toString()); // LogUtils.d(TAG, sb.toString());
} else { // } else {
LogUtils.d(TAG, "The map is empty."); // LogUtils.d(TAG, "The map is empty.");
} // }
} // }
} }