android退出程式的幾種方法
阿新 • • 發佈:2019-02-12
因為發現光呼叫finish()方法後 程式中所啟動的執行緒依舊在後臺執行——Android的特點之一——否則也不會出現諸多用於關閉程序的工具。搜尋了相關資料,大致有以下幾種方法可以用於完全關閉程序的方式。其中第一種方法作者已經用過,的確是可行的。
第一種方法:
1 |
android.os.Process.killProcess(android.os.Process.myPid());
|
第二種方法:在onDestroy函式中加入程式碼
1 |
System.exit( 0 );
|
1 |
第三種方法:
1 2 |
ActivityManager
manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
manager.killBackgroundProcesses( package );
|
1 |
第四種方法:
1 |
manager.restartPackage( package );
|
1 |
第五種方法:
1 2 3 4 |
Intent
MyIntent = new Intent(Intent.ACTION_MAIN);
MyIntent.addCategory(Intent.CATEGORY_HOME);
startActivity(MyIntent);
finish();
|
這個方法好像只是退回到桌面…
第六種方法:使用廣播機制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
public abstract class EnterActivity
extends BaseActivity
{ ...
//
寫一個廣播的內部類,當收到動作時,結束activity
private BroadcastReceiver
broadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context
context, Intent intent) {
close();
unregisterReceiver( this );
//
這句話必須要寫要不會報錯,不寫雖然能關閉,會報一堆錯
}
};
@Override
public void onResume()
{
super .onResume();
//
在當前的activity中註冊廣播
IntentFilter
filter = new IntentFilter();
filter.addAction(Attribute.PAGENAME);
registerReceiver( this .broadcastReceiver,
filter); //
註冊
}
/**
*
關閉
*/
public void close()
{
Intent
intent = new Intent();
intent.setAction(Attribute.PAGENAME);
//
說明動作
sendBroadcast(intent); //
該函式用於傳送廣播
finish();
}
...
}
|
請注意,這段程式碼中缺少了登出程式碼,(unregisterReceiver)這個是必須要加的。
參考來源: